package com.cc.gulimall.seckill.scheduel;

import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;


/**
 * <p>Title: HelloSchedule</p>
 * Description：@Scheduled它不是整合cron ,如果要整合cron 需要自己引入
 * date：2020/7/6 17:03
 */
//@Slf4j
//// 开启异步任务
//@EnableAsync
//@EnableScheduling
//@Component
public class HelloSchedule {

    /**
     * 在Spring中 只允许6位 [* * * ? * 1] : 每周一每秒执行一次
     * [* /5 * * ? * 1] : 每周一 每5秒执行一次
     * 1.定时任务不应阻塞 [默认是阻塞的],一个执行完才开始另一个
     * 自己设置线程池，自己提交任务到线程池
     * 2.spring定时任务，修改自动配置的线程池 spring.task.scheduling.pool.size=5 #有的版本有bug
     * 3.或者让定时任务异步执行（整个方法）(TaskExecutionAutoconfiguration自动配置类。其实也是交给线程池)
     *
     * 解决方案：使用异步+定时任务来完成定时任务不阻塞的功能
     */
    @Async
    @Scheduled(cron = "*/5 * * ? * 1")
    public void hello() {
//        log.info("i love you...");
        try {
            Thread.sleep(3000);
        } catch (InterruptedException e) {
        }
    }
}
